(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=LA (Andrey Lukyanov) (l_a@hotmail.ru) Title=Kinoshara Description=Imports russian movies info with picture from Kinoshara.com Site=http://kinoshara.com Language=RU Version=1.01 (27.03.2005) Requires=3.5.0 Comments= License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program KinoShara; const BaseAddress = 'http://kinoshara.com/'; var MovieName: string; function ParseURL(Text:String):String; var BeginPos : Integer; EndPos : Integer; Value : String; begin repeat BeginPos := Pos('',Text); If BeginPos > 0 Then Begin EndPos := Pos('',Text); Value := copy(Text, BeginPos, EndPos - BeginPos); Value := StringReplace(Value,'
',', '); Value := StringReplace(Value,'
',', '); HTMLRemoveTags(Value); Delete(Text,1,EndPos); If Length(result)>0 Then result := result + ', ' + Value else result := Value; end; until BeginPos < 1; end; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(AnsiLowerCase(Pattern), AnsiLowerCase(List.GetString(i))) <> 0 then begin result := i; Break; end; end; procedure AnalyzePage(Address: string); var ID, FilmName, Line: String; Page: TStringList; FilmPage: TStringList; BeginPos, EndPos, LineBeginPos: Integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); PickTreeClear; // Очистка дерева фильмов PickTreeAdd('Поиск по слову: ' + MovieName, ''); LineBeginPos := 0; repeat BeginPos := FindLine(' ', Page, LineBeginPos+1); LineBeginPos := BeginPos; if BeginPos > 0 then begin // Вывод фильмов в дерево Line:= Page.GetString(BeginPos+1); // Получить строку с адресами repeat BeginPos := Pos(' ',Line); If BeginPos>0 Then // поиск возможных вариантов begin Delete(Line,1,BeginPos); //Удаление начала // получаем адрес BeginPos:=Pos('',Line); ID := copy(Line, BeginPos, EndPos - BeginPos); // Получить адрес страницы // вытаскиваем название BeginPos := Pos('/">',Line)+3; EndPos := Pos('',Line); FilmName := Copy(Line, BeginPos, EndPos - BeginPos); // Получить название для выбора FilmName := StringReplace(FilmName,' ',' '); FilmName := StringReplace(FilmName,'',''); FilmName := StringReplace(FilmName,'',''); PickTreeAdd(FilmName, ID); end; until BeginPos < 1; end; until LineBeginPos < 1; If PickTreeExec(Address) Then AnalyzeMoviePage(Address); // Проанализировать страницу с фильмом end; procedure AnalyzeMoviePage(Address: String); var Page: TStringList; LineNr : Integer; Line, Value, TmpStr : String; BeginPos, EndPos : Integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); //Page.SaveToFile('c:\inet\page.txt'); //!Отладка // URL SetField(fieldURL,Address); //Rating // Translated Title TmpStr := 'Название: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); SetField(fieldTranslatedTitle,Value); end; // Original Title TmpStr := 'Название в оригинале: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); if Value='' then Value := GetField(fieldTranslatedTitle); SetField(fieldOriginalTitle, Value); end; // Year TmpStr := 'Год выпуска: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); SetField(fieldYear, Value); end; //Category TmpStr :='Жанр: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); Value := StringReplace(Value,'/',', '); SetField(fieldCategory, Value); end; //Country // Director TmpStr := 'Режиссер: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); SetField(fieldDirector, Value); end; // Producer // Actors TmpStr := 'В ролях: '; LineNr := FindLine(TmpStr, Page, 0); if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); SetField(fieldActors, Value); end; // Description TmpStr := 'О фильме: '; LineNr := FindLine(TmpStr, Page, 0); //Начало строки описания if LineNr > -1 then begin Line := Page.GetString(LineNr); Line := StringReplace(Line,TmpStr,''); Line := StringReplace(Line, '
', #13#10); Line := StringReplace(Line, '
', #13#10); HTMLDecode(Line); HTMLRemoveTags(Line); Value := Trim(Line); SetField(fieldDescription,Value); end; // Picture TmpStr := '